Many desktop and server computer systems utilize a basic input/output system (“BIOS”) to control various aspects of the computer system. In particular, the BIOS is utilized to initialize the various hardware components within the computer system, to provide an interface between an operating system executing on the computer system and the hardware, and to perform other various functions. In many computer systems, the BIOS also provides a user interface for configuring various aspects of the computer hardware. For instance, a setup menu may be provided by the BIOS in response to the selection of a predefined keyboard key by a user. Through the setup menu, a user can define various configuration options and performance features of the computer system.
One group of variables typically configurable through the setup menu of a computer system is the boot order of mass storage devices attached to the computer system. In particular, because modern computer systems may include multiple devices capable of storing an operating system from which the computer system may be booted, a user is permitted to select the order in which an attempt is made to boot the computer from the various devices. For instance, a user may specify that an attempt be made to boot the computer system from a floppy disk drive prior to attempting to boot the computer system from a hard disk drive. If the computer cannot be booted from the floppy disk drive, an attempt will be made to boot the computer from the hard disk drive. Any number of such devices may be specified in the boot order.
The BIOS contained in many computer systems utilizes a standard setup layout for specifying boot priority. According to this standard setup layout, the bootable devices within the computer system are categorized by type. Once the devices have been categorized by type, three separate drive menus are presented. One menu is presented for hard disk drives, one menu is presented for removable disk drives, and one menu is presented for optical disk drives, such as CD-ROM drives. In addition to the three drive menus, an initial program load (“IPL”) menu is also provided that lists the three available drive types as well as any bootable devices that are not mass storage drives, such as boot entry vector (“BEV”) devices.
Utilizing the standard setup layout, boot order priority is chosen by first setting boot priorities in each of the three separate drive menus and then by setting an overall boot priority in the main IPL menu. For example, overall boot order might be established as removable disk drives, then hard disk drives, and then optical disk drives. In this scenario, if there were two drives of each type, an attempt would be made first to boot the removable devices in the order specified in the removable drive type menu, then an attempt would be made to boot from the hard disk devices in the order specified in the hard disk drive type menu, and finally an attempt would be made to boot the optical devices in the order specified in the optical disk drive type menu.
Although the standard setup layout for specifying drive priority has been widely used, there are several problems with this user interface. The first problem is a lack of flexibility in setting drive boot priority. In particular, creating an arbitrary boot priority order is impossible utilizing the standard setup layout. For example, in the scenario described above, it would be impossible to set an arbitrary boot order that interleaved devices of the various device types. Another problem that occurs with the standard setup layout is that the drive type menus are often presented even though they are redundant. This occurs, for instance, when there is only one drive of a type. In this case, the drive menu for that type is redundant as the drive could be listed directly in the main IPL menu.
It is with respect to these considerations and others that the various embodiments of the present invention have been made.